1. Field of the Invention
The embodiments of the invention generally relate to control systems and, more particularly, to flow control management of storage systems.
2. Description of the Related Art
The growing use of Storage Area Networks (SANs) has led to the flow of data between host servers and the storage subsystems, using protocols such as iSCSI, FCP, Infiband, etc. This trend has been taken one step further by virtualization engines and SAN file-systems that hide the details of the underlying infrastructure. Within a SAN file-system, the client sends meta-requests to the meta-data server, while the data is accessed directly from the logical unit numbers (LUNs) (connected via iSCSI or FCP). In both the above scenarios, namely (1) host server and storage subsystem interaction; and (2) the client and meta-data server interaction, the flow is related by protocols that provide reliability and in-order guarantees. In addition, these protocols also provide resource flow management such that the senders are dynamically allocated bandwidth proportional to their workload characteristics and hardware processing capabilities. The two scenarios are generically referred to as the initiator-target interaction.
There are two general goals of storage resource flow management, which is semantically also similar to network resource flow management: (1) fairly distribute storage resources among all initiators accessing the targets; and (2) avoid under-utilization of storage resources so that initiators can extract the maximum performance out of the storage subsystem. Though the goals are similar, the problem domain of storage resource flow management and traditional network resource flow management are different, and hence traditional network resource management methodologies are not directly applicable. Table 1 enumerates the differences between storage protocols and network protocols.
TABLE 1Storage and Network Protocol DifferencesStorage Protocol (e.g. SAN.FS, iSCSI)Network Protocols (e.g. TCP/IP)One-to-manyOne-to-oneExactInexactMultiple resourcesSingle resourcesApplication-awareNetwork-aware
First, the storage resource management problem addresses the wider domain of resource management between many storage host server clients and a storage subsystem serving these clients. By contrast, network flow resource management is concerned with just two networking peers. Second, the storage flow resource management has an exact notion of the various types of resources under its control. On the other hand, the network flow resource management does not attempt to quantify the resource utilization in the network and treats it as one indivisible type. Finally, the storage flow resource management is application-aware as it is closer to the application stack whereas the network flow resource management is more network-aware.
There are existing storage resource flow management methodologies. A few of these methodologies are aware of the storage-level semantics and provide an integrated approach to resource flow management at the storage subsystem, using the resource indicators in the target (free_tasks) to provide primary input the management decisions. However, these approaches generally do not perform in a predictable fashion in real-world environments that have a large number of initiators, and the underlying interconnection is relatively uncertain. In real-world environments, these conventional approaches generally do not scale, constantly fluctuate, are unfair in resource distribution, and tend to lead to huge number of initiator retries. In particular, the general limitations of the existing approach are enumerated as follows:    a) The flow control window dedicated to each initiator may oscillate periodically creating relatively long periods of idleness at the target which may affect throughput negatively. At times these oscillations may become synchronized creating significant negative impact on throughput.    b) At times, the algorithm may get locked into a state where throughput is distributed unfairly among the several initiators. Different initiators may get throughput that are different by at least one order of magnitude.    c) The flow control window given to each initiator may fluctuate widely even under uniform load from multiple initiators leading to reduced aggregate throughput.    d) At times, some initiators may be given a flow control window which is too small for extended periods of time resulting in initiators bring disconnected and intermittent application failures.
Conventional storage flow resource management techniques can generally be categorized into two areas: file-based and block-based storage networking. File-based storage networking is based on file access protocols such as NFS (Network File System) or CIFS (Common Internet File System). However, NFS and CIFS generally do not have any form of flow control or resource management. Direct Access File System (DAFS) provides a mechanism to throttle requests from clients but is not based on command windowing; hence its usefulness is generally limited.
Block-based storage networking is based on SCSI (small computer system interface) transport protocols such as Fibre Channel and iSCSI. Fibre Channel has a rudimentary flow resource management mechanism that is static and pessimistic and is unlikely to achieve maximum resource utilization. The iSCSI protocol has provisions for command windows that are ideal for such a storage-aware flow resource management algorithm.
Some conventional solutions provide a clustered virtualization gateway that implements its own storage flow resource management. MSCP (mass storage control protocol) is a storage transport protocol used to connect computers and storage over a bus. MSCP has a credit-based load balancing mechanism for resource management with both static and dynamic policies. However, the conventional solutions generally do not guarantee predictable performance or employ control theory ideas to improve flow control. Therefore, there remains a need for a novel resource flow control technique capable of overcoming the limitations of the conventional techniques.